---
sidebar_position: 5
---

# Объекты Git

Всю информацию Git представляет в виде "объектов". **Объект** – это файл, содержащий определенную информацию о репозитории и его файлах. Все объекты хранятся в директории `.git/objects/`. Объекты бывают трех типов:

- **Blob** (англ. binary large object) – большой бинарный объект, другими словами просто бинарный файл. Для каждого файла в репозитории формируется blob-файл, который содержит его имя и сжатое содержимое. Blob-файл формируется, когда мы добавляем файл в индекс.
- **Tree** (англ. tree – дерево). Дерево – это такой тип графа. Оно нужно нам, чтобы показывать связи между файлами в репозитории. Деревья формируются для каждой директории репозитория (в том числе для корневой) во время коммита и показывают, какие файлы (или поддиректории) лежат в данной директории. Таким образом, объект дерева состоит из имен:
  - blob-объектов для файлов, которые лежат в данной директории, и
  - других деревьев для всех поддиректорий.
- **Объект коммита**. Этот объект содержит в себе имя автора коммита, время коммита и объект дерева корневой директории проекта.

Кроме этих трех объектов, важным во внутреннем устройстве Git является *файл индекса*.

**Индекс** – файл, в котором содержатся изменения, подготовленные для добавления в коммит. Во время добавления файлов командой `git add`:

1. Сжимает содержимое этого файла и создает blob-объект.
2. Записывает имя этого объекта в файл индекса.

*Структура хранения данных репозитория в Git (источник: [smartiqa.ru/courses/git](https://smartiqa.ru/courses/git/lesson-2))*:

![Структура хранения данных репозитория в Git](images/git-objects.png)

## Атрибуция

При подготовке статьи использован материал:

- [git-scm.com/docs](https://git-scm.com/docs/)
- [smartiqa.ru/courses/git](https://smartiqa.ru/courses/git)
